﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using App_Negocio;
using System.Security.Principal;

public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //IPrincipal p = HttpContext.Current.User;

        LoginStatus ls = (LoginStatus)this.Master.FindControl("loginStatus1");
        ls.Visible = false;

        LinkButton link = (LinkButton)this.Master.FindControl("LinkPrincipal");
        link.Visible = false;
        lblError.Text = " ";
    }

    protected void btnAceptar_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            string roles = string.Empty;
            //App_Negocio.Cliente cli = new App_Negocio.Cliente();

            //cli.Usuario.NomUsuario = txtUsuario.Text;
            //cli.Usuario.Password = txtPass.Text;
            App_Negocio.Usuario usu = new App_Negocio.Usuario();
            usu.NomUsuario = txtUsuario.Text;
            usu.Password = txtPass.Text;

            //esta funcion busca en la base de datos el usuario y la contraseña 
            //y si son correctas devuelve 1 sino devuelve 0
            int identificador = 0;
            int valido = usu.validarUsuario(out identificador);
            if (valido > 0)
            {
                Session["Mensaje"] = "Bienvenido";
                Session["Identificador"] = identificador;
                //Session["TipoUsuario"] = usu.TipoUsuario.Nombre;

                if (usu.TipoUsuario.Nombre == "Cliente")
                {
                    Session["TipoEmpleado"] = null;
                    roles = usu.TipoUsuario.Nombre;
                }
                else if (usu.TipoUsuario.Nombre == "Administrador")
                {
                    roles = "Administrador|Cliente|Empleado";
                    //roles = usu.TipoUsuario.Nombre;
                }
                else
                {
                    roles = "Empleado|Cliente";
                    //roles = usu.TipoUsuario.Nombre;
                    Empleado_Tipo tipoEmpleado = new Empleado_Tipo();
                    Session["TipoEmpleado"] = tipoEmpleado.buscarTipoEmpleado(identificador);
                    
                }

                FormsAuthenticationTicket ticketDeAutenticacion = new FormsAuthenticationTicket(1,
                                                                txtUsuario.Text,
                                                                DateTime.Now,
                                                                DateTime.Now.AddMinutes(30),
                                                                false,
                                                                roles,
                                                                FormsAuthentication.FormsCookiePath);

                //Encripto el Ticket
                string ticketEncriptado = FormsAuthentication.Encrypt(ticketDeAutenticacion);
                //Crear un Cookie y añadir la entrada para el cifrado de datos de cookie
                HttpCookie CookieDeAutentication = new HttpCookie(FormsAuthentication.FormsCookieName, ticketEncriptado);
                Response.Cookies.Add(CookieDeAutentication);


                if (usu.TipoUsuario.Nombre == "Administrador")
                {
                    Response.Redirect("Index.aspx");
                }
                else if (usu.TipoUsuario.Nombre == "Cliente")
                {
                    Response.Redirect("Principal_Clientes.aspx");
                }
                else if (usu.TipoUsuario.Nombre == "Empleado")
                {
                    Response.Redirect("Principal_Empleados.aspx");
                }
                else
                {
                    Response.Redirect("Index.aspx");
                }

                //Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUsuario.Text, false));
            }

            else
            {
                lblError.Text = "Nombre o Contraseña Invalida";
                txtUsuario.Text = "";
                txtUsuario.Focus();
            }
        }
    }

    protected void btnAltaCliente_Click(object sender, EventArgs e)
    {
        Response.Redirect("Alta_Cliente_Web.aspx");
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("Index.aspx");
    }
}